# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Docker container to build crosvm for the host architecture.

# Build-argument of the image tag of dependencies to use. Set to the same
# version as `ci/image_tag`
ARG TAG

# Stage containing VM data to be used later.
# (COPY --from does not allow the use of ARGs)
FROM gcr.io/crosvm-packages/crosvm_test_vm_amd64:${TAG} as vm

# Main stage
FROM gcr.io/crosvm-packages/crosvm_base:${TAG}

# Install libraries needed to compile crosvm and it's dependencies.
RUN apt-get install --yes --no-install-recommends \
    libcap-dev \
    libdbus-1-dev \
    libdrm-dev \
    libepoxy-dev \
    libssl-dev \
    qemu-system-x86

RUN apt-get install --yes -t testing --no-install-recommends \
    libdrm-dev \
    libepoxy-dev \
    libwayland-dev \
    wayland-protocols

# Allow GCC/Rust to find packages and libraries stored on the scratch volume.
ENV LIBRARY_PATH=/workspace/scratch/lib
ENV LD_LIBRARY_PATH=/workspace/scratch/lib
ENV PKG_CONFIG_PATH=/workspace/scratch/lib/pkgconfig

# Include test VM inside this container
COPY --from=vm \
    /workspace/vm/* \
    /workspace/vm/
COPY --from=vm \
    /root/.ssh /root/.ssh

# Setup entrypoint and interactive shell
WORKDIR /workspace/src/crosvm
COPY bashrc /root/.bashrc
COPY entrypoint /workspace
ENTRYPOINT ["/workspace/entrypoint"]
